package com.terios.logic.ui;

import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.terios.R;
import com.terios.Status;
import com.terios.conts.CommonStrs;
import com.terios.intfs.IWeiboActivity;
import com.terios.logic.MainService;
import com.terios.logic.Task;
import com.terios.logic.ui.adapter.WeiboAdapter;
import com.terios.util.Exit;
import com.weibo.net.ShareActivity;

/**
 * HomeActivity.java 2012-9-30 下午4:45:38
 * 
 * @author Wang Tengrui
 */
public class HomeActivity extends Activity implements IWeiboActivity
{
	public static final int REFRESH_WEIBO = 1;
	public int nowPage = 1;// 当前第几页
	public int pageSize = CommonStrs.MAX_INFO_NUM;// 每页条数
	private ListView weiboList;// 微博信息显示
	private View loginProgress;// 开始页进度条
	private LinearLayout moreWeibo;// 底部更多项
	private ProgressBar progressBar;// 底部更多项的进度条
	private ProgressBar titleProgressBar;// 顶部进度条
	private WeiboAdapter adapter;// 微博信息的适配器
	//private ImageView btRefaush;// 刷新微博的按钮 --有滚动刷新后去掉了此按钮
	// 设置信息常量
	public static final int SETTING = 1;// 设置
	public static final int ACCOUNT = 2;// 账号
	public static final int OFICEAWEIBO = 3;// 官方微博
	public static final int COMMONT = 4;// 意见
	public static final int ABOUTWEIBO = 5;// 关于
	public static final int EXIT = 6;// 退出

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_home);
		initview();// 初始化布局
		MainService.allActivity.add(this);
		init();// 开始请求数据
		initScollViewToRefresh();
	}

	/**
	 * 初始化布局
	 */
	private void initview()
	{
		weiboList = (ListView) this.findViewById(R.id.weibolist);
		View bottom = LayoutInflater.from(this).inflate(R.layout.itembottom,
				null);
		// 标题头的布局
		View title = this.findViewById(R.id.freelook_title_home);
		titleProgressBar = (ProgressBar) title
				.findViewById(R.id.titleprogressBar);
		// 中间显示信息View
		TextView tvname = (TextView) title.findViewById(R.id.tvinfo);
		// 设置登陆用户的名称
		tvname.setText(MainService.nowUser.getScreenName());
		// 写微博按钮
		ImageView btwriteWeibo = (ImageView) title
				.findViewById(R.id.title_bt_left);
		btwriteWeibo.setImageResource(R.drawable.ic_btn_post_text);
		// 底部进度条
		progressBar = (ProgressBar) bottom.findViewById(R.id.progressBar);
		// 将bottom添加到ListView中的底部
		weiboList.addFooterView(bottom);
		moreWeibo = (LinearLayout) bottom.findViewById(R.id.moreweibo);
		loginProgress = this.findViewById(R.id.loginprogres);
		// 点击底部更多的布局
		moreWeibo.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				// 请求页数加一
				++nowPage;
				init();// 再次请求
				// 设置进度条可见
				progressBar.setVisibility(View.VISIBLE);
			}
		});
		// 跳转到发送微博的页面
		btwriteWeibo.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				
				 Intent intent = new Intent(HomeActivity.this,ShareActivity.class); 
				 HomeActivity.this.startActivity(intent);
				 
			}
		});
		// 当我们点击 某一条微博信息的时候就可以调准到信息页面
		weiboList.setOnItemClickListener(new OnItemClickListener()
		{
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id)
			{
				// 从适配器中获取当前点击项的内容
				/*
				 * Status nowstu = (Status)
				 * parent.getAdapter().getItem(position); Intent intent = new
				 * Intent(HomeActivity.this,WeiboInfo.class); //发送到WeiboInfo
				 * intent.putExtra("status", nowstu);
				 * HomeActivity.this.startActivity(intent);
				 */
			}
		});
		
	}
	
	/**
	 * 滑动到底部自动刷新信息
	 * @author zxx
	 */
	private void initScollViewToRefresh() {
		weiboList.setOnScrollListener(new OnScrollListener() {
			
			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
                //判断滚动到底部 
				view.getTop();
                if(view.getLastVisiblePosition()==(view.getCount()-1)){
                	++nowPage;
    				init();// 再次请求
    				// 设置进度条可见
    				progressBar.setVisibility(View.VISIBLE);
                }
                //TODO 上下滑动刷新信息还有问题
//                if(view.getLastVisiblePosition()<=2){//在顶端的时候滑动下拉时，刷新信息
//                	nowPage=1;
//                	init();
//                	progressBar.setVisibility(View.VISIBLE);
//                }
			}
			
			@Override
			public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
			}
		});
	}
	
	@Override
	public void init()
	{
		// 任务参数（当前页面的分页信息）
		HashMap<String, Integer> paramHashMap = new HashMap<String, Integer>();
		paramHashMap.put("nowPage", Integer.valueOf(nowPage));
		paramHashMap.put("pageSize", Integer.valueOf(pageSize));

		// 加载主页微博信息任务
		Task task = new Task(CommonStrs.TASK_GET_USER_HOMETIMEINLINE, paramHashMap);
		MainService.allTask.add(task);
		titleProgressBar.setVisibility(View.VISIBLE);
	}

	/**
	 * 刷新主页面信息
	 */
	public void refresh()
	{
		nowPage = 1;// 将当前页重置为第一页
		init();// 这里就是再次请求第一页信息
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			Exit.btexit(HomeActivity.this);//当我们按下返回键的时候要执行的动作
			return true;
		} else {
			return super.onKeyDown(keyCode, event);
		}
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public void refresh(Object... param)
	{

		int flag = ((Integer) param[0]).intValue();// 获取第一个参数
		switch (flag)
		{
		case REFRESH_WEIBO:
			titleProgressBar.setVisibility(View.GONE);// title进度条不可见
			if (nowPage == 1)
			{
				loginProgress.setVisibility(View.GONE);
				List<Status> nowStatus = (List<Status>) param[1];
				adapter = new WeiboAdapter(this, nowStatus);
				weiboList.setAdapter(adapter);
			} else
			{// 当我们点击更多换回数据
				progressBar.setVisibility(View.GONE);
				adapter.addmoreDate((List<Status>) param[1]);
			}
			break;
		}
	}

	/**
	 * 返回本activity的名字
	 * @return
	 * @author zxx
	 */
	public static String getMyName(boolean isShowPackage){
		if(isShowPackage){
			return HomeActivity.class.getPackage()+HomeActivity.class.getName();
		}else{
			return HomeActivity.class.getName();
		}
	}
}
